import org.junit.Test;
import 新版作用域相关.*;
import 遍历器.作用域监听器;
import 遍历器.抽象语法树基础遍历器;

import static junit.framework.TestCase.assertTrue;

public class 测试作用域相关 {

    @Test
    public void 测试作用域创建() {
        var 树 = 抽象语法树构造器.从文本中解析("int a = 1;");
        var 监听器 = new 作用域监听器();
        new 抽象语法树基础遍历器(监听器).遍历(树);
        assertTrue(监听器.符号表.全局作用域.解析("a") instanceof 变量符号);
        assertTrue(监听器.符号表.全局作用域.解析("int") instanceof 类型);
    }

    @Test
    public void 测试方法作用域() {
        var 树 = 抽象语法树构造器.从文本中解析("int add(int a, int b) {}");
        var 监听器 = new 作用域监听器();
        new 抽象语法树基础遍历器(监听器).遍历(树);
        assertTrue(监听器.符号表.全局作用域.解析("add") instanceof 方法符号);
    }
}
